#include <assert.h>
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include <SDL/SDL_ttf.h>
#include "sdljeu.h"

/**
@brief Vérifie si le pion se trouve sur la dernière case du plateau, si c'est le cas, retourne 1 sinon retourne 0
@param [in, out] pos_pv : SDL_Surface.
@return int.
*/
int sdljeuCaseFin (const SDL_Rect pos_pv) {
    if(((pos_pv.x)==840) && ((pos_pv.y)==530)) // Le pion se trouve sur la dernière case.
        {
            return 1 ;
        }
    else {return 0 ;}
}

/**
@brief Renvoie la position en x qu'aura le pion sur la prochaine case (+110 ou retour dans la première colonne)
@param [in, out] pos_pv : SDL_Surface.
@return int.
*/
int sdljeuPosx(SDL_Rect pos_pv) {
    if((pos_pv.x)==840) // Le pion est au bout d'une ligne.
        {
        pos_pv.x = 70 ; // On le renvoie au début de la ligne suivante.
        }
    else {pos_pv.x=pos_pv.x+110 ;} // Accède à la case de droite.
return pos_pv.x ;
}

/**
@brief Renvoie la position en y qu'aura le pion sur la prochaine case (+110 ou reste dans la même ligne)
@param [in, out] pos_pv : SDL_Surface.
@return int.
*/
int sdljeuPosy(SDL_Rect pos_pv) {
    if((pos_pv.x)==840) // Le pion est en bout de ligne.
        {
            if((pos_pv.y)==530) // Le pion st sur la dernière case du plateau.
                {
                    pos_pv.y=200 ; // Retour à la case départ.
                }
            else {pos_pv.y=pos_pv.y+110 ;} // Le pion accède à la ligne suivante.
        }
    else {pos_pv.y=pos_pv.y ;} // Le pion ne change pas de ligne.
return pos_pv.y ;
}

/**
@brief Initialise la position à (70,200) cad case départ
@param none
@return SDL_Rect
*/
SDL_Rect sdljeuInitPosPion () {
SDL_Rect pos_p ;
pos_p.x = 70 ; // Position sur la case départ
pos_p.y = 200 ;
return pos_p ; }



void sdljeu2(int tours_souhaites) {

/* Intialise les tas de cartes Courrier et Transaction et le dé */
ListeCourrier C;
ImplementeListeC (&C) ;
CarteCourrier courrier ;
ListeTransaction T;
ImplementeListeT (&T) ;
CarteTransaction transaction ;
De d ;
InitDe(&d) ; // Initialisation du dé à 0.
int valeur_de ;
int nb_tours = 0 ;
int tour_joueur = 0 ;

SDL_Init(SDL_INIT_VIDEO);
TTF_Init();

/* Affichage du plateau */
SDL_Event event;
int continuer = 1;
SDL_Surface *ecran = NULL, *titre=NULL, *marge=NULL, *plateau=NULL, *score=NULL, *de=NULL, *trans=NULL ;
SDL_Surface *texte1=NULL, *score1=NULL, *texte2=NULL, *score2=NULL, *texte_tour=NULL, *win=NULL ;
TTF_Font *police = NULL, *police1=NULL ;

/* Annonce du gagnant */
    SDL_Rect pos_win ;
    pos_win.x = 0 ;
    pos_win.y = 60 ;


/* Ecran */
    ecran = SDL_SetVideoMode(1024, 600, 32, SDL_HWSURFACE);
    SDL_WM_SetCaption("Le Début de la Faim", NULL);
    SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 200));


/* Titre */
    SDL_Rect position ;
    position.x = 0;
    position.y = 0;
    titre = SDL_LoadBMP("Titre.bmp");


/* Scores */
    SDL_Rect pos_score ;
    pos_score.x = 0;
    pos_score.y = 60;
    score = SDL_CreateRGBSurface(SDL_HWSURFACE, 1024, 100, 32, 0, 0, 0, 0);
    SDL_FillRect(score, NULL, SDL_MapRGB(score->format, 200, 200, 0));


/* Marge */
    SDL_Rect pos_marge ;
    pos_marge.x = 880 ;
    pos_marge.y = 160 ;
    marge = SDL_CreateRGBSurface(SDL_HWSURFACE, 144, 440, 32, 0, 0, 0, 0) ;
    SDL_FillRect(marge, NULL, SDL_MapRGB(marge->format, 120, 0, 0));


/* Plateau */
    SDL_Rect pos_plateau ;
    pos_plateau.x = 0 ;
    pos_plateau.y = 160 ;
    plateau = SDL_LoadBMP("plateau.bmp");


/* Dé */
    SDL_Rect pos_de;
    pos_de.x = 882 ;
    pos_de.y = 162 ;
    de = SDL_LoadBMP("de.bmp");


/* Transaction */
    SDL_Rect pos_transaction;
    pos_transaction.x = 125 ;
    pos_transaction.y = 270 ;


/* Police */
    char Score1[20] = "" ;
    char Score2[20] = "" ;
    SDL_Color couleurNoire = {0, 0, 0};
    police = TTF_OpenFont("arial.ttf", 25);
    police1 = TTF_OpenFont("arial.ttf", 12);


    /* Pion 1 */
    SDL_Rect position_texte1;
    position_texte1.x = 900;
    position_texte1.y = 350 ;
    SDL_Rect pos_txt_score1;
    pos_txt_score1.x=900 ;
    pos_txt_score1.y=320 ;


    /* Pion 2 */
    SDL_Rect position_texte2;
    position_texte2.x = 900;
    position_texte2.y = 410 ;
    SDL_Rect pos_txt_score2;
    pos_txt_score2.x=900 ;
    pos_txt_score2.y=380 ;


    /* Tour du joueur */
    SDL_Rect pos_txt_tour ;
    pos_txt_tour.x=900 ;
    pos_txt_tour.y=440 ;


/* Affichage des pions */

    /* Pion 1 (vert) */
    SDL_Surface *pion_vert = NULL ;
    SDL_Rect pos_pv ;
    Pion vert ;
    InitialiserTabDynT(&(vert.stockT));

    /* Pion 2 (jaune) */
    SDL_Surface *pion_jaune = NULL ;
    SDL_Rect pos_pj ;
    Pion jaune ;
    InitialiserTabDynT(&(jaune.stockT));


/* Initialisation des 2 pions */
pos_pv=sdljeuInitPosPion () ; /* Initialise la position sur le plateau */
InitialiserPion(&vert, 1, 650) ; /* Initialise la valeur initiale du porte-monnaie */
pion_vert = SDL_LoadBMP("Vert.bmp") ; /* Charge l'image correspondant au pion */
pos_pj=sdljeuInitPosPion () ;
InitialiserPion(&jaune, 2, 650) ;
pion_jaune = SDL_LoadBMP("Jaune.bmp") ;

while(continuer)
{
        SDL_WaitEvent(&event);
        switch(event.type)
        {
            case SDL_QUIT:
                continuer = 0;
                break;
            case SDL_KEYDOWN:
                while (nb_tours!=tours_souhaites)
                {


                if((event.key.keysym.sym)==SDLK_SPACE) // Touche espace
                    {
if(((tour_joueur)%2)==0)
   {
    valeur_de=LancerDe(&d); /* Lance le dé */
    de=sdljeuAffichageDe (valeur_de, de) ; /* Affiche l'image correspondant à la valeur du dé */
    pos_pv = sdljeuAvancerPion(pos_pv, valeur_de) ; /* Avance le pion du nombre de cases mentioné par le dé */

                //Si le pion se trouve sur une carte Courrier
                if( (((pos_pv.x)==180) && ((pos_pv.y)==200)) || (((pos_pv.x)==400) && ((pos_pv.y)==200)) ||
                (((pos_pv.x)==620) && ((pos_pv.y)==200)) || (((pos_pv.x)==400) && ((pos_pv.y)==310)) ||
                (((pos_pv.x)==70) && ((pos_pv.y)==420)) || (((pos_pv.x)==290) && ((pos_pv.y)==420)) ||
                (((pos_pv.x)==70) && ((pos_pv.y)==530)) || (((pos_pv.x)==400) && ((pos_pv.y)==530)) )

                    {
                    courrier=RecupererPremiereCarteC(&C) ; //Tire la première carte du paquet de cartes Courrier
                    vert.monnaie=sdljeuAffichageMonnaieCourrier (pos_pv, vert, courrier) ; // Modification du porte-monnaie en fonction de la valeur de la carte Courrier
                    score=sdljeuNumCourrier (courrier, score) ;
                    AjouterEnQueueListeC(courrier,&C); // Remplace la carte lue à la fin du paquet de cartes Courrier
                    }

                //Si le pion se trouve sur une carte Transaction
                else if( (((pos_pv.x)==(510) && ((pos_pv.y)==200)) || (((pos_pv.x)==70) && ((pos_pv.y)==310)) ||
                (((pos_pv.x)==730) && ((pos_pv.y)==420)) || (((pos_pv.x)==180) && ((pos_pv.y)==530))) )
                    {
                    //trans = SDL_LoadBMP("Transaction.bmp");
                    transaction=RecupererPremiereCarteT(&T) ;
                    score=sdljeuNumTransaction (transaction, score) ;
                    vert.monnaie=sdljeuAffichageMonnaieTransaction(pos_pv, vert, transaction) ;
                    AjouterElementTabDynT(&(vert.stockT), transaction);
                    }

                // Si le pion se trouve sur une case A vendre
                else if( (((pos_pv.x)==(180) && ((pos_pv.y)==310)) || (((pos_pv.x)==510) && ((pos_pv.y)==420)) ||
                (((pos_pv.x)==840) && ((pos_pv.y)==420)) || (((pos_pv.x)==620) && ((pos_pv.y)==530))) )
                    {
                     if( (EstVideTabT(&(vert.stockT))==0 ))
                        {
                         transaction=ValeurIemeElementTabDynT(&(vert.stockT),0);
                         score=sdljeuNumTransaction (transaction, score) ;
                         vert.monnaie=sdljeuAffichageMonnaieVente(pos_pv, vert, transaction) ;
                         AjouterEnQueueListeT(transaction,&T);
                         SupprimerElementTabDynT(&(vert.stockT),0) ;
                        }
                    }

                //Si le pion se trouve sur une autre case, c'est à dire une case Evenement
                else
                    {
                    score = sdljeuAffichageEvenement (pos_pv, score, vert) ;
                    vert.monnaie = sdljeuAffichageMonnaie (pos_pv, vert) ;
                    if(((pos_pv.x)==70) && ((pos_pv.y)==200)) { nb_tours++ ; } // nb_tours augmente dès qu'un pion passe sur la case départ
                    }

 tour_joueur++ ;
    }

else
    {
    valeur_de=LancerDe(&d); /* Lance le dé */
    de=sdljeuAffichageDe (valeur_de, de) ; /* Affiche l'image correspondant à la valeur du dé */
    pos_pj = sdljeuAvancerPion(pos_pj, valeur_de) ; /* Avance le pion du nombre de cases mentioné par le dé */

                //Si le pion se trouve sur une carte Courrier
                if( (((pos_pj.x)==180) && ((pos_pj.y)==200)) || (((pos_pj.x)==400) && ((pos_pj.y)==200)) ||
                (((pos_pj.x)==620) && ((pos_pj.y)==200)) || (((pos_pj.x)==400) && ((pos_pj.y)==310)) ||
                (((pos_pj.x)==70) && ((pos_pj.y)==420)) || (((pos_pj.x)==290) && ((pos_pj.y)==420)) ||
                (((pos_pj.x)==70) && ((pos_pj.y)==530)) || (((pos_pj.x)==400) && ((pos_pj.y)==530)) )
                    {
                    courrier=RecupererPremiereCarteC(&C) ; //Tire la première carte du paquet de cartes Courrier
                    jaune.monnaie=sdljeuAffichageMonnaieCourrier (pos_pj, jaune, courrier) ; // Modification du porte-monnaie en fonction de la valeur de la carte Courrier
                    score=sdljeuNumCourrier (courrier, score) ;
                    AjouterEnQueueListeC(courrier,&C); // Remplace la carte lue à la fin du paquet de cartes Courrier
                    }

                //Si le pion se trouve sur une carte Transaction
                else if( (((pos_pj.x)==(510) && ((pos_pj.y)==200)) || (((pos_pj.x)==70) && ((pos_pj.y)==310)) ||
                (((pos_pj.x)==730) && ((pos_pj.y)==420)) || (((pos_pj.x)==180) && ((pos_pj.y)==530))) )
                    {
                    //trans = SDL_LoadBMP("Transaction.bmp");
                    transaction=RecupererPremiereCarteT(&T) ;
                    score=sdljeuNumTransaction (transaction, score) ;
                    jaune.monnaie=sdljeuAffichageMonnaieTransaction(pos_pj, jaune, transaction) ;
                    AjouterElementTabDynT(&(jaune.stockT), transaction);
                    }

                // Si le pion se trouve sur une case A vendre
                else if( (((pos_pj.x)==(180) && ((pos_pj.y)==310)) || (((pos_pj.x)==510) && ((pos_pj.y)==420)) ||
                (((pos_pj.x)==840) && ((pos_pj.y)==420)) || (((pos_pj.x)==620) && ((pos_pj.y)==530))) )
                    {
                     if( (EstVideTabT(&(jaune.stockT))==0 ))
                        {
                         transaction=ValeurIemeElementTabDynT(&(jaune.stockT),0);
                         score=sdljeuNumTransaction (transaction, score) ;
                         jaune.monnaie=sdljeuAffichageMonnaieVente(pos_pv, jaune, transaction) ;
                         AjouterEnQueueListeT(transaction,&T);
                         SupprimerElementTabDynT(&(jaune.stockT),0) ;
                        }
                    }

                //Si le pion se trouve sur une autre case, c'est à dire une case Evenement
                else
                    {
                    score = sdljeuAffichageEvenement (pos_pj, score, jaune) ;
                    jaune.monnaie = sdljeuAffichageMonnaie (pos_pj, jaune) ;
                    if(((pos_pj.x)==70) && ((pos_pj.y)==200)) { nb_tours++ ; } // nb_tours augmente dès qu'un pion passe sur la case départ
                    }
 tour_joueur++ ;
    }



                }
                break;

    sprintf(Score1,"%d", vert.monnaie.argent) ;
    sprintf(Score2,"%d", jaune.monnaie.argent) ;
    SDL_FreeSurface (score1) ;
    SDL_FreeSurface (score2) ;

    score1 = TTF_RenderText_Blended(police, Score1, couleurNoire);
    texte1 = TTF_RenderText_Blended(police, "Vert :", couleurNoire);
    score2 = TTF_RenderText_Blended(police, Score2, couleurNoire);

    } // Fin du while (nb_tours!=tours_souhaites)

// Si la partie est finie et que Vert a un score supérieur à Jaune
if( (nb_tours==tours_souhaites)&&(jaune.monnaie.argent) > (vert.monnaie.argent)&&(nb_tours==12))
    {win = SDL_LoadBMP("Fond-Fin-jaune-licence.bmp");}
else if( (nb_tours==tours_souhaites)&&(vert.monnaie.argent) >= (jaune.monnaie.argent)&&(nb_tours==12))
    {win = SDL_LoadBMP("Fond-Fin-vert-master.bmp");}
else if( (nb_tours==tours_souhaites)&&(vert.monnaie.argent) >= (jaune.monnaie.argent)&&(nb_tours==20))
    {win = SDL_LoadBMP("Fond-Fin-vert-master.bmp");}
else if( (nb_tours==tours_souhaites)&&(jaune.monnaie.argent) > (vert.monnaie.argent)&&(nb_tours==20))
    {win = SDL_LoadBMP("Fond-Fin-jaune-master.bmp");}
else if( (nb_tours==tours_souhaites)&&(vert.monnaie.argent) >= (jaune.monnaie.argent)&&(nb_tours==32))
    {win = SDL_LoadBMP("Fond-Fin-vert-doctorat.bmp");}
else if( (nb_tours==tours_souhaites)&&(jaune.monnaie.argent) > (vert.monnaie.argent)&&(nb_tours==32))
    {win = SDL_LoadBMP("Fond-Fin-jaune-doctorat.bmp");}



} // Fin du switch(event.type)

SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255)); // Efface l'écran !!

SDL_BlitSurface(marge, NULL, ecran, &pos_marge);
SDL_BlitSurface(plateau, NULL, ecran, &pos_plateau);
SDL_BlitSurface(score, NULL, ecran, &pos_score);
SDL_BlitSurface(titre, NULL, ecran, &position);
SDL_BlitSurface(de, NULL, ecran, &pos_de) ;
SDL_BlitSurface(score, NULL, ecran, &pos_score);
SDL_BlitSurface(pion_vert, NULL, ecran, &pos_pv);
SDL_BlitSurface(pion_jaune, NULL, ecran, &pos_pj);
SDL_BlitSurface(trans, NULL, ecran, &pos_transaction);
SDL_BlitSurface(win, NULL, ecran, &pos_win);

    sprintf(Score1,"%d", vert.monnaie.argent) ;
    sprintf(Score2,"%d", jaune.monnaie.argent) ;
    SDL_FreeSurface (score1) ;
    SDL_FreeSurface (score2) ;

    score1 = TTF_RenderText_Blended(police, Score1, couleurNoire);
    SDL_BlitSurface(score1, NULL, ecran, &position_texte1); // Blit du texte

    texte1 = TTF_RenderText_Blended(police, "Vert :", couleurNoire);
    SDL_BlitSurface(texte1, NULL, ecran, &pos_txt_score1); // Blit du texte

    score2 = TTF_RenderText_Blended(police, Score2, couleurNoire);
    SDL_BlitSurface(score2, NULL, ecran, &position_texte2); // Blit du texte

    texte2 = TTF_RenderText_Blended(police, "Jaune :", couleurNoire);
    SDL_BlitSurface(texte2, NULL, ecran, &pos_txt_score2); // Blit du texte

if(((tour_joueur)%2)==0)
    {
    texte_tour = TTF_RenderText_Blended(police1, "C'est au tour de Vert", couleurNoire);
    }
else
    {
    texte_tour = TTF_RenderText_Blended(police1, "C'est au tour de Jaune", couleurNoire);
    }

    SDL_BlitSurface(texte_tour, NULL, ecran, &pos_txt_tour);


        /* On met à jour l'affichage */
        SDL_Flip(ecran);
    } // Fin du while(continuer)
}


/**
@brief Retourne la nouvelle image du dé, selon sa valeur.
@param [in, out] valeur_de : int, [in] de : SDL_Surface*
@return SDL_Surface*.
*/
SDL_Surface* sdljeuAffichageDe (const int valeur_de, SDL_Surface *de) {

    switch(valeur_de)
        {
        case 1:
        de = SDL_LoadBMP("de1.bmp");
        break;

        case 2:
        de = SDL_LoadBMP("de2.bmp");
        break;

        case 3:
        de = SDL_LoadBMP("de3.bmp");
        break;

        case 4:
        de = SDL_LoadBMP("de4.bmp");
        break;

        case 5:
        de = SDL_LoadBMP("de5.bmp");
        break;

        case 6:
        de = SDL_LoadBMP("de6.bmp");
        break;

        default:
        de = SDL_LoadBMP("de_echec.bmp");
        break;
        }
return de ;

}


/**
@brief Avance le pion du nombre de cases mentionné par le dé, si le pion est sur la case 31, il retourne à la case départ
@param [in] pos_pv : SDL_Surface, [in, out] valeur de : int.
@return SDL_Rect.
*/
SDL_Rect sdljeuAvancerPion(SDL_Rect pos_pion, const int valeur_de) {

    int i=0 ; // Compteur de boucle.
    int case_finale=0 ;

    while ((i<valeur_de) && (case_finale==0)) // Si le pion a finit d'avancer du nombre de cases
        {
        // Pour obtenir les nouvelles coordonnées du pion, faire appel aux fonctions dans cet ordre là :
        pos_pion.y=sdljeuPosy(pos_pion);
        pos_pion.x=sdljeuPosx(pos_pion);
        case_finale=sdljeuCaseFin(pos_pion) ;
        i++ ;
        }
    if(case_finale==1) // Si le pion est sur la dernière case, retour case départ !
        {
        pos_pion.y=200;
        pos_pion.x=70;
        }
    return pos_pion ;
 }


/**
@brief Modifie la valeur du porte-monnaie en fonction de la case evenement
@param [in, out] pos_pion : SDL_Surface, [in] pion : Pion
@return Porte_Monnaie.
*/
Porte_Monnaie sdljeuAffichageMonnaie (const SDL_Rect pos_pion, Pion pion)  {

if (((pos_pion.x)==290) && ((pos_pion.y)==200)) // Case 2
        {
         ChangerArgent(&(pion.monnaie), 300) ;
        }

    if (((pos_pion.x)==730) && ((pos_pion.y)==200)) // Case 6
        {
         ChangerArgent(&(pion.monnaie), 200) ;
        }

    if (((pos_pion.x)==70) && ((pos_pion.y)==200)) // Case DEPART !!
        {
         ChangerArgent(&(pion.monnaie), 650) ;
        }

    if (((pos_pion.x)==290) && ((pos_pion.y)==310)) // Case 10
        {
         ChangerArgent(&(pion.monnaie), -30) ;
        }

    if (((pos_pion.x)==510) && ((pos_pion.y)==310)) // Case 12
        {
         ChangerArgent(&(pion.monnaie), -180) ;
        }

    if (((pos_pion.x)==620) && ((pos_pion.y)==310)) // Case 13
        {
         ChangerArgent(&(pion.monnaie), 200) ;
        }

    if (((pos_pion.x)==840) && ((pos_pion.y)==310)) // Case 15
        {
         ChangerArgent(&(pion.monnaie), -50) ;
        }

    if (((pos_pion.x)==180) && ((pos_pion.y)==420)) // Case 17
        {
         ChangerArgent(&(pion.monnaie), 100) ;
        }

    if (((pos_pion.x)==400) && ((pos_pion.y)==420)) // Case 19
        {
         ChangerArgent(&(pion.monnaie), -250) ;
        }

    if (((pos_pion.x)==290) && ((pos_pion.y)==530)) // Case 26
        {
         ChangerArgent(&(pion.monnaie), -100) ;
        }

    if (((pos_pion.x)==730) && ((pos_pion.y)==530)) // Case 30
        {
         ChangerArgent(&(pion.monnaie), 500) ;
        }

    return pion.monnaie ;}


/**
@brief Affiche la carte evenement correspondante à la case sur laquelle se trouve le pion
@param [in, out] pos_pion : SDL_Surface,[in] bandeau :SDL_Surface* [in,out] pion : Pion
@return SDL_Surface*
*/
SDL_Surface* sdljeuAffichageEvenement (const SDL_Rect pos_pion, SDL_Surface* bandeau, const Pion pion) {

    if (((pos_pion.x)==290) && ((pos_pion.y)==200)) // Case 2
        {
         bandeau = SDL_LoadBMP("Case2.bmp");
        }

    if (((pos_pion.x)==730) && ((pos_pion.y)==200)) // Case 6
        {
         bandeau = SDL_LoadBMP("Case6.bmp");
        }

    if (((pos_pion.x)==290) && ((pos_pion.y)==310)) // Case 10
        {
         bandeau = SDL_LoadBMP("Case10.bmp");
        }

    if (((pos_pion.x)==510) && ((pos_pion.y)==310)) // Case 12
        {
         bandeau = SDL_LoadBMP("Case12.bmp");
        }

    if (((pos_pion.x)==620) && ((pos_pion.y)==310)) // Case 13
        {
         bandeau = SDL_LoadBMP("Case13.bmp");
        }

    if (((pos_pion.x)==840) && ((pos_pion.y)==310)) // Case 15
        {
         bandeau = SDL_LoadBMP("Case15.bmp");
        }

    if (((pos_pion.x)==180) && ((pos_pion.y)==420)) // Case 17
        {
         bandeau = SDL_LoadBMP("Case17.bmp");
        }

    if (((pos_pion.x)==400) && ((pos_pion.y)==420)) // Case 19
        {
         bandeau = SDL_LoadBMP("Case19.bmp");
        }

    if (((pos_pion.x)==290) && ((pos_pion.y)==530)) // Case 26
        {
         bandeau = SDL_LoadBMP("Case26.bmp");
        }

    if( (((pos_pion.x)==(840) && ((pos_pion.y)==200)) || (((pos_pion.x)==730) && ((pos_pion.y)==310)) ||
        (((pos_pion.x)==620) && ((pos_pion.y)==420)) || (((pos_pion.x)==510) && ((pos_pion.y)==530))) ) // Case 7, Case 14, Case 21 et Case 28
        {
         bandeau = SDL_LoadBMP("Caserepos.bmp");
        }

    if (((pos_pion.x)==730) && ((pos_pion.y)==530)) // Case 30
        {
         bandeau = SDL_LoadBMP("Case30.bmp");
        }

    if (((pos_pion.x)==70) && ((pos_pion.y)==200)) // Case DEPART
        {
         bandeau = SDL_LoadBMP("Case0.bmp");
        }
return bandeau ;
}


/**
@brief Modifie la valeur du porte-monnaie en fonction de la carte courrier
@param [in, out] pos_pion : SDL_Rect, [in,out] pion : Pion, [in,out] courrier : CarteCourrier.
@return Porte_Monnaie
*/
Porte_Monnaie sdljeuAffichageMonnaieCourrier (const SDL_Rect pos_pion, Pion pion, const CarteCourrier courrier) {
        ChangerArgent(&(pion.monnaie), courrier.argent_carte) ;
        return pion.monnaie ;}


/**
@brief Modifie le porte-monnaie suite à une position sur une case Transaction
@param [in, out] pos_pion :SDL_Rect, [in,out] pion :Pion, [in,out] transaction : CarteTransaction
@return Porte_Monnaie
*/
Porte_Monnaie sdljeuAffichageMonnaieTransaction (const SDL_Rect pos_pion, Pion pion, const CarteTransaction transaction) {


        ChangerArgent(&(pion.monnaie), transaction.prix_achat) ;
        return pion.monnaie ;}


/**
@brief Modifie le porte-monnaie suite à une position sur une case Vente
@param [in, out] pos_pion :SDL_Rect, [in,out] pion :Pion, [in,out] transaction : CarteTransaction
@return Porte_Monnaie
*/
Porte_Monnaie sdljeuAffichageMonnaieVente (SDL_Rect pos_pion, Pion pion, CarteTransaction transaction) {
        ChangerArgent(&(pion.monnaie), transaction.prix_paye) ;
        return pion.monnaie ;}


/**
@brief Retourne le courrier correspondant dans bandeau
@param [in, out] courrier : CarteCourrier,[in] bandeau :SDL_Surface*
@return SDL_Surface*
*/
SDL_Surface* sdljeuNumCourrier (const CarteCourrier courrier, SDL_Surface* bandeau) {

        switch(courrier.numero_carte)
        {
        case 1:
        bandeau = SDL_LoadBMP("Courrier1.bmp");
        break;

        case 2:
        bandeau = SDL_LoadBMP("Courrier2.bmp");
        break;

        case 3:
        bandeau = SDL_LoadBMP("Courrier3.bmp");
        break;

        case 4:
        bandeau = SDL_LoadBMP("Courrier4.bmp");
        break;

        case 5:
        bandeau = SDL_LoadBMP("Courrier5.bmp");
        break;

        case 6:
        bandeau = SDL_LoadBMP("Courrier6.bmp");
        break;

        case 7:
        bandeau = SDL_LoadBMP("Courrier7.bmp");
        break;

        case 8:
        bandeau = SDL_LoadBMP("Courrier8.bmp");
        break;

        case 9:
        bandeau = SDL_LoadBMP("Courrier9.bmp");
        break;

        case 10:
        bandeau = SDL_LoadBMP("Courrier10.bmp");
        break;

        case 11:
        bandeau = SDL_LoadBMP("Courrier11.bmp");
        break;

        case 12:
        bandeau = SDL_LoadBMP("Courrier12.bmp");
        break;

        case 13:
        bandeau = SDL_LoadBMP("Courrier13.bmp");
        break;

        case 14:
        bandeau = SDL_LoadBMP("Courrier14.bmp");
        break;

        case 15:
        bandeau = SDL_LoadBMP("Courrier15.bmp");
        break;

        case 16:
        bandeau = SDL_LoadBMP("Courrier16.bmp");
        break;

        case 17:
        bandeau = SDL_LoadBMP("Courrier17.bmp");
        break;

        case 18:
        bandeau = SDL_LoadBMP("Courrier18.bmp");
        break;

        case 19:
        bandeau = SDL_LoadBMP("Courrier19.bmp");
        break;

        case 20:
        bandeau = SDL_LoadBMP("Courrier20.bmp");
        break;

        default:
        bandeau = SDL_LoadBMP("Erreur1.bmp");
        break;
        }
    return bandeau ;

}


/**
@brief Retourne l'image de la transaction correspondant dans bandeau
@param [in, out] transaction : CarteTransaction,[in] bandeau :SDL_Surface*
@return SDL_Surface*
*/
SDL_Surface* sdljeuNumTransaction (const CarteTransaction transaction, SDL_Surface* bandeau) {

        switch(transaction.numero_carte)
        {
        case 21:
        bandeau = SDL_LoadBMP("Transaction21.bmp");
        break;

        case 22:
        bandeau = SDL_LoadBMP("Transaction22.bmp");
        break;

        case 23:
        bandeau = SDL_LoadBMP("Transaction23.bmp");
        break;

        case 24:
        bandeau = SDL_LoadBMP("Transaction24.bmp");
        break;

        case 25:
        bandeau = SDL_LoadBMP("Transaction25.bmp");
        break;

        case 26:
        bandeau = SDL_LoadBMP("Transaction26.bmp");
        break;

        case 27:
        bandeau = SDL_LoadBMP("Transaction27.bmp");
        break;

        case 28:
        bandeau = SDL_LoadBMP("Transaction28.bmp");
        break;

        default:
        bandeau = SDL_LoadBMP("Erreur.bmp");
        break;

        }
    return bandeau ;
}
